package agv.web;


/**
 * ������ɹ�����
 */
public class CodeGenerateUtil {
    private final static String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private final static int pixLen = str.length();
    private static volatile int pixOne = 0;
    private static volatile int pixTwo = 0;
    private static volatile int pixThree = 0;
    private static volatile int pixFour = 0;

    /**
     * ���ɶ�ʱ���ڲ����ظ��ĳ���Ϊ15λ���ַ�������Ҫ����ISSP-MOCģ�����ݿ���������ʹ�á�<br/>
     * ���ɲ���Ϊ��ȡ��1970��1��1����ʱ�����������ǰʱ��ĺ�������16�����ַ���ֵ�����ַ���ֵΪ11λ<br/>
     * ��׷����λ"0-z"�������ַ���.<br/>
     * ���ϵͳʱ������Ϊ����<b>2304-6-27 7:00:26<b/>��ʱ�䣬���ᱨ��<br/>
     * ����ϵͳ���صĺ����������ϵͳ��ϵ�ܴ����Ա���������׼ȷ�����������Ա�֤��ϵͳ���ص�һ��������������36��4�η�����1679616��ID���ظ���<br/>
     *
     * @return 15λ��ʱ�䲻���ظ����ַ�����<br/>
     * @author lixunhui@qq.com
     * @since JDK1.6
     */
    final public synchronized static String generate() {
        StringBuilder sb = new StringBuilder();// ����һ��StringBuilder
        sb.append(Long.toHexString(System.currentTimeMillis()));// ����ӵ�ǰʱ��ĺ���ֵ��16����
        pixFour++;
        if (pixFour == pixLen) {
            pixFour = 0;
            pixThree++;
            if (pixThree == pixLen) {
                pixThree = 0;
                pixTwo++;
                if (pixTwo == pixLen) {
                    pixTwo = 0;
                    pixOne++;
                    if (pixOne == pixLen) {
                        pixOne = 0;
                    }
                }
            }
        }
        String code = sb.append(str.charAt(pixOne))
                .append(str.charAt(pixTwo))
                .append(str.charAt(pixThree))
                .append(str.charAt(pixFour))
                .toString().toUpperCase();

        return code;
    }
}

